﻿using System;
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Xml.Serialization;

/// <summary>
/// Summary description for CXHotelInfo
/// </summary>
namespace CE.HotelEan
{
    public class CXHotelInfo
    {
        public CXHotelInfo()
        {
            //
            // TODO: Add constructor logic here
            //
        }
        public HotelInformationResponse HotelInformationResponse { get; set; }
    }
    public class HotelInformationResponse : BaseResponse
    {
        public HotelInformationResponse(){}

        public HotelDetails HotelDetails { get; set; }
        [XmlAttribute]
        public long hotelId { get; set; }
        [XmlIgnore]
        public bool hotelIdSpecified { get; set; }
        public HotelImages HotelImages { get; set; }
        public HotelSummary HotelSummary { get; set; }
        public PropertyAmenities PropertyAmenities { get; set; }
        public RoomTypes RoomTypes { get; set; }
        public Suppliers Suppliers { get; set; }
    }
    public class HotelDetails
    {
        public HotelDetails() { }

        public string amenitiesDescription { get; set; }
        public string areaInformation { get; set; }
        public string businessAmenitiesDescription { get; set; }
        public string checkInInstructions { get; set; }
        public string checkInTime { get; set; }
        public string checkOutTime { get; set; }
        public string depositCreditCardsAccepted { get; set; }
        public string depositPolicy { get; set; }
        public string diningDescription { get; set; }
        public string drivingDirections { get; set; }
        public float extraPersonCharge { get; set; }
        [XmlIgnore]
        public bool extraPersonChargeSpecified { get; set; }
        public string guaranteeCreditCardsAccepted { get; set; }
        public string guaranteePolicy { get; set; }
        public string hotelPolicy { get; set; }
        public string knowBeforeYouGoDescription { get; set; }
        public string locationDescription { get; set; }
        public string mandatoryFeesDescription { get; set; }
        public string nationalRatingsDescription { get; set; }
        public string nativeCurrencyCode { get; set; }
        public int numberOfFloors { get; set; }
        [XmlIgnore]
        public bool numberOfFloorsSpecified { get; set; }
        public int numberOfRooms { get; set; }
        [XmlIgnore]
        public bool numberOfRoomsSpecified { get; set; }
        public string propertyDescription { get; set; }
        public string propertyInformation { get; set; }
        public string renovationsDescription { get; set; }
        public string roomDetailDescription { get; set; }
        public string roomFeesDescription { get; set; }
        public string roomInformation { get; set; }
    }
    public class HotelImages
    {
        public HotelImages(){}

        [XmlElement("HotelImage")]
        public HotelImage[] HotelImage { get; set; }
        [XmlAttribute]
        public int size { get; set; }
    }
    public class HotelImage
    {
        public HotelImage(){}

        public long byteSize { get; set; }
        public string caption { get; set; }
        public int category { get; set; }
        public long height { get; set; }
        public long hotelImageId { get; set; }
        public string name { get; set; }
        public long supplierId { get; set; }
        public string thumbnailUrl { get; set; }
        public int type { get; set; }
        public string url { get; set; }
        public long width { get; set; }
    }
    public class PropertyAmenities
    {
        public PropertyAmenities(){}

        [XmlElement("PropertyAmenity")]
        public PropertyAmenity[] PropertyAmenity { get; set; }
        [XmlAttribute]
        public int size { get; set; }
    }
    public class PropertyAmenity
    {
        public PropertyAmenity(){}

        public string amenity { get; set; }
        public long amenityId { get; set; }
    }
    public class RoomTypes
    {
        public RoomTypes(){}

        [XmlElement("RoomType")]
        public RoomType[] RoomType { get; set; }
        [XmlAttribute]
        public int size { get; set; }
    }
    public class RoomType
    {
        public RoomType(){}

        public string description { get; set; }
        public string descriptionLong { get; set; }
        public RoomAmenities roomAmenities { get; set; }
        [XmlAttribute]
        public string roomCode { get; set; }
        public HotelImages roomImages { get; set; }
        [XmlAttribute]
        public long roomTypeId { get; set; }
    }
    public class RoomAmenities
    {
        public RoomAmenities(){}

        [XmlElement("RoomAmenity")]
        public RoomAmenity[] RoomAmenity { get; set; }
        [XmlAttribute]
        public int size { get; set; }
    }
    public class RoomAmenity
    {
        public RoomAmenity(){}

        public string amenity { get; set; }
        [XmlAttribute]
        public long amenityId { get; set; }
    }
    public class Suppliers
    {
        public Suppliers(){}

        [XmlAttribute]
        public int size { get; set; }
        [XmlElement("Supplier")]
        public Supplier[] Supplier { get; set; }
    }
    public class Supplier
    {
        public Supplier(){}

        [XmlAttribute]
        public string chainCode { get; set; }
        [XmlAttribute]
        public int id { get; set; }
    }
}
